#include <string.h>
#include <stdio.h>
#include <stdlib.h>

//申请一个M行 N列的字符串数组；返回他的头
char** mallocString(int M ,int N)
{
    int i,j;
    char* one_string;
    char** one_List;
    
    one_List=(char**)malloc(sizeof(char*)*M);  
    for(i=0;i<M;i++)  
    one_List[i]=(char*)malloc(sizeof(*one_string)*N);  

    for(i=0;i<M;i++)  
    {
        for(j=0;j<N;j++)  
        {
            printf("%p\n",&one_List[i][j]);     //输出每个元素地址，每行的列与列之间的地址时连续的，行与行之间的地址不连续
        }
    }
    
    return one_List;  
}

//撤销一个M行 N列的字符串数组；
void destroyString(int M,int N,char** one_List)
{
    int i,j;
    for(i=0;i<M;i++)  
    free(one_List[i]);
    free(one_List); 
}